﻿using System;
using System.Collections;

namespace Program18
{
    class Program
    {
        static void Main(string[] args)
        {
            //int[] nums = { 1, 4, 5, 3, 7, 6, 9, 12, 2, 20 };
            //Array.Sort(nums);
            int[] nums = new int[1000];

            //不重复的随机数
            ArrayList arr = new ArrayList();
            Random rnd = new Random();

            while (arr.Count < 1000)
            {
                int tempNum = rnd.Next(1, 10000);
                if (!arr.Contains(tempNum))
                {
                    arr.Add(tempNum);
                }
            }
            for(var i = 0; i < nums.Length; i++)
            {
                nums[i] = (int)arr[i];
                Console.Write(nums[i] + " ");
            }
            //for (var i = 0; i < nums.Length; i++)
            //{
            //    nums[i] = rnd.Next(1, 1000);
            //}

            //for(var i = 0; i < nums.Length; i++)
            //{
            //    Console.Write(nums[i] + " ");
            //}
            Console.WriteLine();
            Console.WriteLine("排序后...");

            //C#类库，队列的排序方法
            //Array.Sort(nums);
            //Array.Reverse(nums);
            #region 冒泡排序
            //冒泡排序，从第一个元素遍历到倒数第二个元素
            //for (var i = 0; i < nums.Length; i++)
            //{
            //    for (var j = 0; j < nums.Length; j++)
            //    {
            //        if (nums[j] > nums[j+1])
            //        {
            //            //如果当前元素大于后面元素。它们进行交换
            //            var tmp = nums[i];
            //            nums[j] = nums[j + 1];
            //            nums[j + 1] = tmp;
            //        }
            //    }
            //}
            #endregion
            #region 选择排序
            int minIndex;
            for (var i = 0; i < nums.Length - 1; i++)
            {
                minIndex = i;
                //查询余下数组中最小值的下标，存放到minIndex
                for (var j = i + 1; j < nums.Length; j++)
                {
                    if (nums[j] < nums[minIndex])
                    {
                        minIndex = j;
                    }
                }
                var tmp = nums[i];
                nums[i] = nums[minIndex];
                nums[minIndex] = tmp;
            }
#endregion
            for (var i = 0; i < nums.Length; i++)
                Console.Write(nums[i] + " ");
            
        }
    }
}
